unit clsSeq_Pedido;

interface
uses Dm, dbtables, biblio;
type
  TSeq_Pedido = class(tobject)
    function Retorna_Ultimo(p_seq_pedido: string): string;
  end;
implementation

function TSeq_Pedido.Retorna_Ultimo;
var
  tq: TQuery;
  ultimo: int64;
  inserir: boolean;
begin
  inserir := false;
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('Select max(seq_numero) as ultimo from seq_pedido where seq_pedido=:a');
  tq.Params[0].asstring := p_seq_pedido;
  tq.open;
  if tq.fieldbyname('ultimo').isnull then begin
    inserir := true;
    ultimo := 1;
  end else
    ultimo := tq.fieldbyname('ultimo').asinteger + 1;

  tq.close;
  tq.sql.clear;
  tq.params.clear;
  if inserir then
    tq.sql.add('Insert into seq_pedido values(:k_seq_pedido,:k_seq_numero)')
  else
    tq.sql.add('Update seq_pedido set seq_numero=:k_seq_numero where seq_pedido=:k_seq_pedido');
  tq.ParamByName('k_seq_numero').asfloat := ultimo;
  tq.ParamByName('k_seq_pedido').asstring := p_seq_pedido;
  tq.execsql;
  tq.Close;
  tq.Free;
  result := strzero(ultimo, 9);
end;

end.
